package Gestores.DtoObjects;

import Gestores.DaoInterfaces.PagoCertificadoDAO;
import Gestores.DataBaseLink;
import Gestores.Entidades.EntidadPagoCertificado;
import Gestores.Entidades.EntidadPagoCredencial;
import Gestores.NucleoBaseDatos;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class PagoCertificadoDTO implements PagoCertificadoDAO {

    private DataBaseLink conn;
    private EntidadPagoCertificado entidad;

    public PagoCertificadoDTO() {

        this.conn = NucleoBaseDatos.getInstance();
    }

    @Override
    public ArrayList<Object> buscarPorCi(int ci) throws Exception {
        ResultSet resultado;
        String palabra="";
        palabra = "Call ObtenerPagoCertificadoPorCi(" + String.valueOf(ci) + ");";
        resultado = conn.executeSql(palabra);
        return devolverListaCargada(resultado);
    }

    private ArrayList<Object> devolverListaCargada(ResultSet resultado) throws SQLException {
        ArrayList<Object> lista = new ArrayList<Object>();
        // (int id, int ci, String descripcion, int monto, Date fecha, boolean estado)
        while (resultado.next()) {
            EntidadPagoCertificado certificado = new EntidadPagoCertificado(resultado.getInt(1),
                    resultado.getInt(2), resultado.getString(3), resultado.getInt(4), resultado.getDate(5),
                    resultado.getBoolean(6));
            lista.add(certificado);
        }
        this.conn.CerrarStatement();
        return lista;
    }

    @Override
    public ArrayList<Object> buscarPorCiId(int ci, int id) throws Exception {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void insertar(Object objeto) throws Exception {
          entidad = (EntidadPagoCertificado) objeto;
            //InsertarPagoCertificado(Ci Int,Descripcion Varchar(100),Monto Int)
            
            String comando = "call InsertarPagoCertificado(" + entidad.InsertarCertificadoToString() + ");";
            this.conn.executeSql(comando);
    }

    @Override
    public void actualizar(Object primaryKey, Object objeto) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void eliminacionLogica(Object objeto) throws Exception {
         EntidadPagoCertificado cre= cre = (EntidadPagoCertificado) objeto;
        String comando = "call  AnularPagoCertificado(" + cre.InsertarEliminacionComand() + ");";
        this.conn.executeSql(comando);
    }

    @Override
    public void eliminacionFisica(Object objeto) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public ArrayList<Object> listarTabla() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
